我已经编写了我的第一个 wxpython 应用程序并且它运行良好,但是我在正确调整主窗口大小时遇到了困难。该面板包含 a wx.BoxSizer
,而后者又包含 a wx.FlexGridSizer
,而后者又包含 6 wx.TextCtrl
s。
我读过的教程似乎侧重于手动设置大小。我真正想做的是让TextCtrl
s 计算出它们应该包含来自给定字体(例如“WWW”)的 3 个字符的大小,然后应该自动确定 FlexGridSizer 的大小和主要窗户。我不需要担心调整布局的大小(所以也许 Sizer 不是必需的?),我只想自动确定大小,而不是我将魔术常量放入程序中。
import wx
from names_as_vs import name_sum, name_mult
NAME_SIZE = 35
class MyForm(wx.Frame):
def __init__(self, parent,title):
wx.Frame.__init__(self,parent,title=title,size=(405,200))
self.default_init_UI()
self.init_UI()
self.Show()
def default_init_UI(self):
"""Do all the standard UI stuff"""
file_menu = wx.Menu()
menuAbout = file_menu.Append(wx.ID_ABOUT,"About\tCtrl-A")
menuExit = file_menu.Append(wx.ID_EXIT,"Quit\tCtrl-Q")
menu_bar = wx.MenuBar()
menu_bar.Append(file_menu,"File")
self.SetMenuBar(menu_bar)
self.Bind(wx.EVT_MENU, self.OnAbout, menuAbout)
self.Bind(wx.EVT_MENU, self.OnExit, menuExit)
def init_UI(self):
"""Particular UI setup for this program"""
hbox = wx.BoxSizer(wx.HORIZONTAL) …
Run Code Online (Sandbox Code Playgroud) 我试图从二进制文件中提取一些字符串.当我在linux中使用这个带有字符串的正则表达式时它工作正常,但它在python中不起作用.
在字符串中:
strings -n 3 mke2fs | grep -E '^([0-9][0-9]*(\.[0-9]+)+)'
Run Code Online (Sandbox Code Playgroud)
结果:1.41.11
在python中:
import re
f = open("mke2fs","rb").read()
for c in re.finditer('^([0-9][0-9]*(\.[0-9]+)+)',f):
print c.group(1)
Run Code Online (Sandbox Code Playgroud)
结果是空的.我该如何解决这个问题?是因为我的Python版本(我使用的是Python 2.7)?我尝试使用正则表达式(另一种替代方案)仍然没有结果.