标题:python小白询问如何给wxpython中循环初始化的按钮绑定不同的事件,以及在fr ...
只看楼主
qwerch
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-11-5
结帖率:0
 问题点数:0 回复次数:1 
python小白询问如何给wxpython中循环初始化的按钮绑定不同的事件,以及在frame中添加一个拖动块
我想完成用BitmapButton做的电子相册预览,一行6个位图按钮,点击其中一个按钮,都会弹出相关的figure展示它们。但不知循环绑定出了什么问题,点击一次后不能弹出对应的figure,只会弹出最后一个图的figure,且再次点击别的按钮会报错:MatplotlibDeprecationWarning: Passing the block parameter of show() positionally is deprecated since Matplotlib 3.1; the parameter will become keyword-only in 3.3.
  self.tk.mainloop(n)



代码如下:
程序代码:
import wx
from PIL import Image
import matplotlib.pyplot as plt
import os
import tkinter
import re
import pygame



class MyFrame(wx.Frame):  # 子类化框架对像
    def __init__(self, parent):  # 定义子类构造器,i,j为pos的横纵坐标
        i = 10
        j = 10
        h = 1
        wx.Frame.__init__(self, parent, -1, 'TextEntryDialog', pos=(300, 200), size=(1000, 1000))  # 调用父类构造器(必须)
        panel = wx.Panel(self)  # 创建画板,控件容器
        for f in os.listdir(r'e:\photo2'):
            newpath = r'e:\photo2' + "\\" + f
            print(newpath)
            #wx.Frame.__init__(self, parent, -1, 'TextEntryDialog', pos=(300, 200), size=(1000, 1000))
            #panel = wx.Panel(self)  # 创建画板,控件容器
            pic = wx.Image(newpath, wx.BITMAP_TYPE_BMP).ConvertToBitmap()  # 载入bmp图片
            self.button = wx.BitmapButton(panel, -1, pic, pos=(i, j), size=(150, 300))  # 创建bmp按钮

            #plt.figure(10)
            # f = path + '\\' + name
            im = Image.open(newpath)
            print(im.size)
            plt.imshow(im)
            plt.axis('off')
            # 成功进行到这里
            #self.Bind(wx.EVT_BUTTON, self.Destroy, self.button)  # 绑定bmp按钮事件
            self.Bind(wx.EVT_BUTTON, plt.show, self.button)  # 绑定bmp按钮事件
            i = i + 170
            h = h + 1
            if h > 6:
                h = 1
                i = 10
                j = j + 310
    def onclick(self):
        for f in os.listdir(r'e:\photo2'):
            newpath = r'e:\photo2' + "\\" + f
            print(newpath)
            im = Image.open(newpath)
            print(im.size)
            plt.imshow(im)
            plt.axis('off')




if __name__ == '__main__':
    appl = wx.App()
    #app = wxGUI()
    #app.MainLoop()

    a = a=MyFrame(parent=None)
    #a.__init__(parent=None)
    a.Show(True)
    appl.MainLoop()
运行代码结果如下:





搜索更多相关主题的帖子: 按钮 import frame 绑定 size 
2019-11-05 00:55
qwerch
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-11-5
得分:0 
而且我的位图按钮一旦排到第三排,就已经超出了frame,所以想添加类似scrollbar的东西,不知道如何添加使得有滑动块查看页面

2019-11-05 00:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497619-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025409 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved