有没有办法在初始化后修改wxPython上的StaticBoxSizer的标签?
我在wxPython的文档中找不到任何内容.
谢谢
嗨,我正在使用wxpython绘制一个项目圈.请仔细查看代码并告诉我我做错了什么,它甚至没有显示任何错误,但也没有绘制圆圈.我只是得到一个空白的窗口.
import wx
class SketchFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, "Sketch Frame",size=(350,350))
self.sketch = SketchWindow(self, -1)
class SketchWindow(wx.Window):
def __init__ (self, parent,ID):
wx.Window.__init__(self, parent, ID)
self.panel =wx.Panel(self, size= (350,350))
self.InitBuffer()
def InitBuffer(self):
size=self.GetClientSize()
self.Buffer=wx.EmptyBitmap(size.width,size.height)
dc=wx.BufferedDC(None,self.Buffer)
dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
dc.Clear()
self.Drawcircle(dc)
self.reInitBuffer=False
def Drawcircle(self,dc):
pen=wx.Pen('blue',4)
dc.SetPen(pen)
dc.DrawCircle(100,100,50)
def OnPaint(self, event):
dc = wx.BufferedPaintDC(self, self.buffer)
if __name__=='__main__':
app=wx.PySimpleApp()
frame=SketchFrame(None)
frame.Show(True)
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)
谢谢
当您单击取消时,它取消...当您单击确定时,它会重新弹出对话框.我怎样才能解决这个问题?
def quitApp(self, event):
dial = wx.MessageDialog(None, 'Are you sure you want to quit?','Quit', wxYES | wxNO)
if dial.ShowModal() == wxID_YES:
self.Close(true)
Run Code Online (Sandbox Code Playgroud) 我对wx.lib.plot.PlotCanvas模块有困难,让它在面板中显示.有人可以帮我理解我做错了什么吗?
#!/usr/bin/python
import wx
import logging
import wx.lib.plot as plot
class PlotCanvasExample(wx.Panel):
def __init__(self, parent, id, size):
''' Initialization routine for the this panel.'''
wx.Panel.__init__(self, parent, id, style=wx.BORDER_NONE, size=desiredSize)
self.data = [(1,2), (2,3), (3,5), (4,6), (5,8), (6,8), (10,10)]
canvas = plot.PlotCanvas(self, size=desiredSize)
line = plot.PolyLine(self.data, legend='', colour='pink', width=2)
gc = plot.PlotGraphics([line], 'Line Graph', 'X Axis', 'Y Axis')
canvas.Draw(gc, xAxis=(0,15), yAxis=(0,15))
if __name__ == '__main__':
''' Simple main program to display this panel. '''
# Create a simple wxFrame …Run Code Online (Sandbox Code Playgroud) 我在更新列表框时遇到了一些麻烦,我尝试过刷新和更新,但那些返回的错误。
列表框使用列表来获取其信息。它将显示列表中的初始项目。
但是,当我更新列表时(在程序运行时),它不会实时显示更改。
如果您难以理解我的意思,请发表评论。
我如何在Python中创建报表设计器...
我是一个Python菜鸟,所以我可能会在这里遗漏一些东西,但我在程序中如何处理字符串时遇到问题.当我显示它时,只显示第一个字符.
# some code
MessageBox = ctypes.windll.user32.MessageBoxA
# some other code
testString = self.statusBar1.GetStatusText(0)
# displays "azertyu"
MessageBox(None, "azertyu", 'COUCOU', 0)
# displays 'M'
MessageBox(None, testString, 'COUCOU3', 0)
# displays 'a'
MessageBox(None, testString[1:], 'COUCOU3', 0) #
#displays 'c'
MessageBox(None, testString[2:], 'COUCOU3', 0)
Run Code Online (Sandbox Code Playgroud)
完整的字符串是'Machine'(实际上比它长).Python如何认为任何字符都是结尾字符并且一次只显示一个字符?我在这里错过了一些Python基础知识吗?
PS.GetStatusText参考可在http://www.wxpython.org/docs/api/wx.StatusBar-class.html#GetStatusText获得.我用一个很长的字符串测试了GetStatusText,它似乎没有剪切文本.
在wxPython中我有GridBagSizer,GS,与一些嵌套大小测定器s1和s2和一个按钮b,在单个小区中.
在一个EVT_BUTTON事件上,我得到了按钮对象.要将网格中的按钮对象移动到不同的网格单元格,我需要移动顶级sizer,s1,这是GridBagSizer的直接"子"(如果这是正确的术语),gs.找到顶级sizer的最佳方法是什么?
object.GetContainingSizer()返回按钮对象的sizer,s2,但我看不到如何到达s1.我是否需要在s2(或b)对象中存储对s1的引用?这看起来相当不优雅?
# pseudocode
panel=wx.Panel( None )
gs= wx.GridBagSizer()
s1= wx.BoxSizer()
s2= wx.BoxSizer()
b= wx.Button(panel, wx.ID_ANY, 'AButton')
s2.Add( b )
s1.Add( s2 )
gs.Add( s1, (row,col))
Run Code Online (Sandbox Code Playgroud)
答案(到目前为止):我发现了一段我不知道应该归功于哪些代码 - 似乎与dabo有关.它在dGridSizer.py中,但它做了类似我正在寻找的东西:
szitm= grid_sizer.FindItemAtPosition( (row,col) )
if szitm:
if szitm.IsWindow():
itm=szitm.GetWindow()
elif szitm.IsSizer():
itm=szitm.GetSizer()
try: # in case some other IsSomething() I don't have covered
grid_sizer.SetItemPosition( itm, (newrow,col))
except:
pass
Run Code Online (Sandbox Code Playgroud)
到目前为止,这似乎适用于我在网格中的所有情况.目前还不确定我是否理解它,我将不得不深入研究代码 - 现在只需要完成这项工作.
我在python中编写了一个程序,我使用了绝对定位,所有的大小和位置都以像素为单位指定.当我在我的电脑上运行时,它工作正常,但是当我在另一台PC上运行它没有正确显示时,组件彼此重叠,并且它们的位置不是它们应该的方式.这是一个ok gui的例子:http://postimg.org/image/e4od9f52f/ 这里是坏gui:http://postimg.org/image/jy30nq63r/
这只是一个例子,每个对话框都有这样的问题.
谁知道什么是问题?
先生,亚历山大
我有一个FlexGridSizer,我添加了一堆TextCtrl,其中一些是供用户输入路径,所以我在那些TextCtrl框右侧的相邻列中有一个Button.标签文本是......我只在其中使用TextCtrl的列上调用AddGrowableCol ...这是我在for循环中添加Button的方法(我不使用addmany):
widgetItem = wx.Button(parent, -1, "...")
widgetItem.row=rowNum
widgetItem.col=colNum
widgetItem.target = lastTextBox
self.Bind(wx.EVT_BUTTON, self.getFile, widgetItem)
currentSizer.AddF(widgetItem, wx.SizerFlags(0).Border(wx.ALL, 5))
Run Code Online (Sandbox Code Playgroud) 我正在使用wxPython中的多个wx.Choice控件,并且我需要使用“重置”按钮来单击时恢复默认选项“-选择-”。无法实现这一点,我最近来的就是将其重置为空选项,这不是我们想要的。我希望按下重置按钮时出现默认选项“-选择-”。请参阅下面的代码。
data.py
import wx
class MyFrame1 ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 250,300 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.SYSTEM_MENU|wx.TAB_TRAVERSAL )
self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
DataBox = wx.BoxSizer( wx.HORIZONTAL )
gSizer2 = wx.GridSizer( 0, 2, 0, 0 )
self.Color_Label = wx.StaticText( self, wx.ID_ANY, u"Color:", wx.DefaultPosition, wx.DefaultSize, 0 )
self.Color_Label.Wrap( -1 )
self.Color_Label.SetFont( wx.Font( 13, 70, 90, 90, False, wx.EmptyString ) )
gSizer2.Add( self.Color_Label, 0, wx.ALL, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 wxpython 检测位图上的 CLI。on_click 过程似乎在没有 CLIC 的情况下运行,并且在单击时不运行。我做错了什么?
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
import os
import wx
import wx.lib.agw.thumbnailctrl as TC
import Image
filename="Raphael-Poli-angle.png"
class MyForm(wx.Frame):
def on_clic(self):
print "clicked"
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Choose Dot in Picture", size=(700,500))
self.panel = wx.Panel(self, wx.ID_ANY)
png = wx.Image(filename, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
image=wx.StaticBitmap(self.panel, -1, png, (1, 1), (png.GetWidth(), png.GetHeight()))
image.Bind(wx.EVT_LEFT_DOWN, self.on_clic())
self.Show(True)
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm()
app.SetTopWindow(frame)
frame.Show()
app.MainLoop()
Run Code Online (Sandbox Code Playgroud) 我需要从WxWidget转换DateTime
Fri Sep 28 00:00:00 2018
Run Code Online (Sandbox Code Playgroud)
为另一种格式:
28/09/18 20:35:00
Run Code Online (Sandbox Code Playgroud)
但我找不到任何事要做
wxpython ×13
python ×7
wxwidgets ×3
click ×1
nested ×1
onclick ×1
python-2.7 ×1
python-3.x ×1
report ×1
sizer ×1
string ×1
wxtextctrl ×1