- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发一个小程序,可以用作化学计算器或类似的东西,但我在这个过程中遇到了一些麻烦...
在主文件中,我试图从文件 grafika.py 中导入 Aplikacija 类,但无论我多么努力,它似乎都无法正常工作 - 我得到 AttributeError: 'module' object has no attribute 'Aplikacija'。
这可能是初学者的问题,但我已经盯着屏幕看了几个小时了,我不知道哪里出了问题。如果您能帮助我,我将不胜感激:)
P.S:请不要介意变量的名称,因为我的母语不是英语...
主文件的(缩短的)代码:
import grafika
from Tkinter import *
root = Tk()
root.title('ChemHelp v0.1')
root.minsize(360, 240)
#root.iconbitmap('mojaikona.ico')
p = grafika.Aplikacija(root)
root.mainloop()
这是整个 grafika.py 文件(它很长......)
from Tkinter import *
import webbrowser
class Aplikacija():
def __init__(self, master):
#meni
self.meni = Menu(master)
master.config(menu=self.meni)
self.meni.add_command(label="Periodni sistem", command=self.ps_okno)
self.help_meni = Menu(self.meni)
self.meni.add_cascade(label="Pomoč", menu=self.help_meni)
self.help_meni.add_command(label="PDF", command=self.open_pdf)
self.help_meni.add_command(label="Spletna dokumentacija", command=self.open_web)
self.meni.add_command(label="O programu", command=self.open_about)
self.meni.add_command(label="Zahvale", command=self.open_thanks)
self.meni.add_command(label="Zapri", command=quit)
#glavno okno
body = Frame(root, width=360, height=240)
body.pack()
#izracun molske mase
self.okno_masa = LabelFrame(body, text="Molska masa", padx=5, pady=5)
self.okno_masa.grid(padx=10, pady=10)
self.prompt1 = Label(self.okno_masa, text="Formula spojine: ")
self.prompt1.grid(row=0, sticky=W)
self.formula1 = Entry(self.okno_masa)
self.formula1.grid(row=0, column=1)
self.send1 = Button(self.okno_masa, text="Pošlji", command=lambda: self.gfx_molska_masa(self.okno_masa))
self.send1.grid(row=1, columnspan=2)
#izracun mnozine
self.okno_mn = LabelFrame(body, text="Množina", padx=5, pady=5)
self.okno_mn.grid(padx=10, pady=10)
self.prompt2 = Label(self.okno_mn, text="Formula spojine: ")
self.prompt2.grid(row=4, sticky=W)
self.formula2 = Entry(self.okno_mn)
self.formula2.grid(row=4, column=1)
self.prompt3 = Label(self.okno_mn, text="Masa spojine: ")
self.prompt3.grid(row=5, sticky=W)
self.masa = Entry(self.okno_mn)
self.masa.grid(row=5, column=1)
self.send2 = Button(self.okno_mn, text="Pošlji", command=lambda: self.gfx_mnozina(self.okno_mn))
self.send2.grid(row=6, columnspan=2)
#funkcije
def ps_okno(self):
self.ps = Toplevel()
self.ps.title("Periodni sistem")
self.ps.minsize(480, 180)
self.tekst = Label(self.ps, text="Tukaj bo periodni...")
self.tekst.grid()
self.zapri = Button(self.ps, text="Zapri", command=self.ps.destroy)
self.zapri.grid()
print("Okno odprto :P")
def open_pdf(self):
print("PDF odprt ;)")
def open_web(self):
self.url = 'http://test.org'
webbrowser.open_new(self.url)
print("Splet prečekiran :D")
def open_about(self):
self.o = Toplevel()
self.o.title("O programu")
self.o.minsize(300, 300)
self.about = LabelFrame(self.o, text="O programu", padx=5, pady=5)
self.about.grid(padx=10, pady=10)
self.slika = PhotoImage(file="about_slika.gif")
self.photo = Label(self.about, image=self.slika)
self.photo.slika=self.slika
self.photo.grid(row=0, columnspan=2)
self.avtor = Label(self.about, text="Avtor: ")
self.avtor.grid(row=1, sticky=W)
self.avtor2 = Label(self.about, text="Jane Doe")
self.avtor2.grid(row=1, column=1)
self.verzija = Label(self.about, text="Verzija programa: ")
self.verzija.grid(row=2, sticky=W)
self.verzija2 = Label(self.about, text="1.0")
self.verzija2.grid(row=2, column=1)
self.jezik = Label(self.about, text="Pisano v programskem jeziku Python. © 2013")
self.jezik.grid(row=3, columnspan=2)
self.zapri = Button(self.about, text="Zapri", command=self.o.destroy)
self.zapri.grid(row=4, columnspan=2)
print("Kdo bo to sploh bral? :O")
def open_thanks(self):
self.h = Toplevel()
self.h.title("Zahvale")
self.h.minsize(200, 200)
self.zahvale = LabelFrame(self.h, text="Zahvale", width=100, padx=5, pady=5)
self.zahvale.grid(padx=10, pady=10)
self.z_vsebina = Label(self.zahvale, text="Rada bi se zahvalila bla bla... in tle pol ful teksta al neki...")
self.z_vsebina.grid()
self.mentor = LabelFrame(self.h, text="Mentor", width=100, padx=5, pady=5)
self.mentor.grid(padx=10, pady=10)
self.m_vsebina = Label(self.mentor, text="John Does, prof.")
self.m_vsebina.grid()
self.viri = LabelFrame(self.h, text="Viri", width=100, padx=5, pady=5)
self.viri.grid(padx=10, pady=10)
self.v_vsebina = Label(self.viri, text="http://test.org \nhttp://www.test.com")
self.v_vsebina.grid()
self.zapri = Button(self.h, text="Zapri", command=self.h.destroy)
self.zapri.grid()
print("Tale stvar je lame -.-")
def gfx_molska_masa(self, frame):
self.rezultat = Entry(frame)
self.rezultat.config(width="9")
self.rezultat.grid(row=3)
self.molska_masa = "187"
self.rezultat.insert(0, self.molska_masa)
self.enota = Label(frame, text="g/mol")
self.enota.grid(row=3, column=1, sticky=W)
print("Molska masa je")
def gfx_mnozina(self, frame):
self.rezultat = Entry(frame)
self.rezultat.config(width="8")
self.rezultat.grid(row=7)
self.mnozina = "1.0"
self.rezultat.insert(0, self.mnozina)
self.enota = Label(frame, text="mol")
self.enota.grid(row=7, column=1, sticky=W)
print("Mnozina je")
当我从 grafika.py 文件中的主文件运行代码时,它工作正常,没有错误或任何...
最佳答案
如果您已经导入文件一次,则另一个导入不会重新加载它 - 模块已缓存。您需要reload(grafika)
来获取最新的更改。
关于Python 不想导入 App 类(tkinter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13146009/
在 How to make a Tkinter window jump to the front? 中提出的问题之后的一个问题 我希望有一个顶层窗口(我用它来导航我的其他主窗口)总是在前面。但我希望它
有没有办法在 Tkinter 中保持小部件(特别是图像)的堆叠顺序一致?例如,我可能在 Canvas 上的同一位置有两个矩形、两个三角形和一个圆。圆圈移动到最后一次点击鼠标的地方,但我总是希望它被绘制
这是一个简单的 GUI 程序,用于创建 5x16 按钮矩阵。 from tkinter import * root = Tk() button = [[0 for x in range(16)] fo
有一个错误:“AttributeError: module 'tkinter' has no attribute 'messagebox'” 即使 import tkinter 一开始就已经给出了,为
我知道 menu.tk_popup() 可用于在特定坐标处打开上下文菜单,但也不知道如何从中打开子菜单,如果这有意义的话。这是我编写的代码: import tkinter as tk root = t
我正在尝试在禁用自动换行和水平滚动条的文本窗口中书写,如下所示: root = Toplevel() root.geometry("%dx%d+0+0" % (350,400)) af=Frame(r
已经将文本变量分配给小部件后,如何将其删除? widget.config(textvariable=None)只是不工作。在谷歌或这里找不到任何东西。 最佳答案 将您的变量分配给一个空字符串以实现此目
Jython 支持 Tkinter 吗?如果我用 Python 编写一个程序并放一个 使用 Tkinter 的 GUI 前端,做同样的事情有多难 Jython 中的程序?或者对于 Jython GUI
因此,我尝试创建一个 tkinter 窗口,显示当前时间和日期以及自定义短语。不过,我遇到的问题是,我似乎无法在第二天刷新日期。 我可以传递截至运行代码时的当前日期,但之后它变为静态。 这是我目前的程
我的理解是在初始化 __init__ 中的所有框架和小部件之后方法,tkinter 窗口会调整大小以适合所有这些组件。 我想将窗口的初始化大小设置为其最小大小。我希望能够最大化并放大窗口,但我从不希望
此代码仅水平居中,如何使进度条也垂直居中? import Tkinter import ttk root = Tkinter.Tk() root.geometry("=500x500") root.p
使用 Python 2.7 和 Tkinter 模块,我创建了一个菜单按钮并为其分配了一个菜单。现在每次我在特定位置发布菜单时,菜单的宽度都会根据字符数自动设置。有没有办法在菜单小部件中设置静态宽度?
我想将我的 tkinter 应用程序的主题更改为 clam。 代码是什么,我把它放在哪里?我试过了: from tkinter import * from tkinter.ttk import * s
我有以下代码: from Tkinter import * from urllib import urlretrieve import webbrowser import ttk def get_la
我知道,如果我将滚动条控制的框架绑定(bind)到函数 ( onFrameConfigure ),您可以获得滚动条位置,如下所示:self.calendar_frame.bind("", self.o
许多网站都说菜单小部件有一个选项“字体”,但我一直无法设置它。系统是在 Windows 8.1 中运行的 Python 3.5。脚本开始: 从 tkinter 导入 * 根 = Tk() root.g
我正在阅读本教程,它帮助我同时学习 tkinter 和 wxWidgets,但我想深入挖掘,所以想知道哪个 GUI 工具更适合深入学习,为什么? 最佳答案 不可能说哪个“更好”。两者均可用于最常见的用
看书学python,tkinter.END用在一段代码里不用解释 import tkinter def count(text, out_data): """ Update out_data w
我正在尝试使用 Python 2.7 将 Tkinter 导入到我的项目中,但我收到了错误: ImportError: No module named tkinter 在有人说之前,我已经尝试了“Tk
当我回答 Tkinter 问题时,我通常会尝试自己运行代码,但有时我会收到此错误: Traceback (most recent call last): File "C:\Python27\pyg
我是一名优秀的程序员,十分优秀!