我希望let imageView = UIImageView()
imageView.image = UIImage.named("yourImage")
// do any settings to your imageView
let titleTap = UITapGestureRecognizer(target: self, action: #selector(titlePressed))
self.navigationItem.titleView = imageView
self.navigationItem.titleView?.isUserInteractionEnabled = true
self.navigationItem.titleView?.addGestureRecognizer(titleTap)
变量在类Pin
中接受某些输入,但要StartPage
继承,但是要使用任何使用Options
变量的代码。 Pin
给出错误print(Pin)
。将NameError: name 'Pin' is not defined
和StartPage
都作为父类传递给类tk.Frame
会产生错误Option
。不要判断我,因为我是Tkinter和OOP的新手,任何解释性的解决方案都将受到高度赞赏。
TypeError Cannot create a consistent method resolution
order (MRO) for bases Frame, StartPage
答案 0 :(得分:1)
我希望Pin变量在StartPage类中需要一些输入 由Options类继承。
使用self.Pin
。另外,实例名称的约定以小写字母开头,因此self.pin
。
初始化也应使用self
:
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.pin = tk.Entry(self, bd = 4, relief="groove", show="*", font=20, justify='center')
self.pin.pack()
...
,并始终将父级的构造函数作为子级__init__
中的第一条语句。
class Options(StartPage):
def __init__(self, parent, controller):
StartPage.__init__(self, parent)
print(self.pin)
您应该做什么?
Composition over inheritance。
如果您只想在StartPage
类中从Options
获得一个字段,则可以简单地将pin
作为参数传递。
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.pin = tk.Entry(self, bd = 4, relief="groove", show="*", font=20, justify='center')
self.pin.pack()
...
class Options(fk.Frame):
def __init__(self, parent, controller, pin):
tk.Frame.__init__(self, parent)
self.controller = controller
print(pin)
...
然后从外面看起来像这样:
start_page = StartPage(some_parent, some_controller)
options = Options(some_parent, some_controller, start_page.pin)