SyntaxError: Non-ASCII character '\xe7′ in file c:/test/main.py on line 14, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
需要在文件最前面加上一行注释,指明字符集:
— encoding: UTF-8 -
这种情况,需要在字符串前面加上一个u:
我一直在找怎样在初始化一个窗口时,指定width/height,但是找了好久也没找到。最后在群友的帮助下,发现只能使用resize(width, height)这个方法。
默认窗口的打开位置是在屏幕的左上方(但又不在角上),如何让它默认居中呢?
只找到一个麻烦的方法来实现这个功能:
def center(self):
qr = self.frameGeometry() cp = gui.QDesktopWidget().availableGeometry().center() qr.moveCenter(cp) self.move(qr.topLeft())
不知道有没有更好的办法,见stackoverflow上的提问。
显示在菜单栏上的菜单叫Menu,下拉出来的叫Action。
先看这个效果:
对应的代码如下:
def createMenus(self):
self.loginMenu = self.menuBar().addMenu(u"登录") self.loginMenu.addAction(gui.QAction(u"登录", self, statusTip=u"登录到数组网(shuzu.org)", triggered=self.login)) self.dataMenu = self.menuBar().addMenu(u"数据") self.dataMenu.addAction(gui.QAction(u"下载数据", self, statusTip=u"从服务器下载数据", triggered=self.downloadData)) self.dataMenu.addAction(gui.QAction(u"上传数据", self, statusTip=u"将新增或修改的数据上传到服务器", triggered=self.uploadData)) self.dataMenu.addAction(gui.QAction(u"导入数据", self, statusTip=u"将QQ聊天记录导出文件(Mht格式)数据导入进来", triggered=self.importData)) self.dataMenu.addAction(gui.QAction(u"重置数据", self, statusTip=u"取消所有本地导入或修改", triggered=self.resetData))
其中triggered对应的是类中定义的其它方法,在菜单被点击时调用。
如果仅仅生成一个QTableWidget对象,效果将成杯具:
应该这么做。首先生成一个QTableWidget:
def createTable(self):
self.table = gui.QTableWidget(10, 4)
再把它放到一个layout里,赋给一个没什么用的widget,最后设为central widget:
def layout(self):
mainLayout = gui.QVBoxLayout() mainLayout.addWidget(self.table) dummy = gui.QWidget() dummy.setLayout(mainLayout) self.setCentralWidget(dummy)
现在的效果如下:
表头是几个数字,把它换成其它文字:
self.table.setHorizontalHeaderLabels([u"日期”, u"时间”, u"用户”, u"内容”])
为了突出效果,设个比较大的:
mainLayout.setContentsMargins(25, 25, 25, 25)
实际上设的是:
mainLayout.setContentsMargins(5, 5, 5, 5)
默认各列是等宽的,如何让“内容”那一列宽一些呢?
self.table.setColumnWidth(3, 500)
这个与我预想的不同,我以为可以方便的table.insertRow([“aaa”,“bbb”]),可惜要这么做:
row = self.table.rowCount()
self.table.insertRow(row)
self.table.setItem(row, 0, gui.QTableWidgetItem(“aaa”))
self.table.setItem(row, 1, gui.QTableWidgetItem(“bbb”))
self.table.setItem(row, 2, gui.QTableWidgetItem(“ccc”))
self.table.setItem(row, 3, gui.QTableWidgetItem(“ddd”))
先插入一行,再依次给每个单元格里设置数据,有点麻烦